package com.gymmsystem.GYMMSystem.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员卡类型实体类
 * 对应数据库表 member_card_types，存储会员卡类型的基本信息
 *
 * @author GYMMSystem
 * @version 1.0
 * @since 2025
 */
@Data
@TableName("member_card_types")
public class MemberCardType {

    /**
     * 卡类型ID - 主键，自增长
     */
    @TableId(value = "card_type_id", type = IdType.AUTO)
    private Long cardTypeId;

    /**
     * 卡类型名称（月卡（+30积分），季卡（+100积分），年卡（+420积分））
     */
    @TableField("card_name")
    @JsonProperty("cardName")
    private String cardName;

    /**
     * 价格 - 会员卡类型的标准价格
     */
    @TableField("price")
    @JsonProperty("price")
    private BigDecimal price;

    /**
     * 状态 - 卡类型的上下架状态：0-下架，1-上架
     */
    @TableField("status")
    @JsonProperty("status")
    private Integer status;




    /**
     * 状态常量类
     * 定义会员卡类型的上下架状态常量
     */
    public static class Status {
        /**
         * 下架状态 - 不可购买
         */
        public static final int DISABLED = 0;

        /**
         * 上架状态 - 可正常购买
         */
        public static final int ENABLED = 1;
    }

    /**
     * 检查卡类型是否可用（上架状态）
     *
     * @return 如果状态为上架返回true，否则返回false
     */
    public boolean isAvailable() {
        return Status.ENABLED == this.status;
    }



    /**
     * 获取状态描述信息
     *
     * @return 状态的中文描述
     */
    public String getStatusDesc() {
        if (status == null) {
            return "未知";
        }
        return status == Status.ENABLED ? "上架" : "下架";
    }

}